package com.sleep.psy.external_server.business.main.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sleep.psy.external_server.business.main.entity.MainUser;
import com.sleep.psy.external_server.business.main.entity.vo.LoginReq;
import com.sleep.psy.external_server.business.main.entity.vo.RegistReq;
import com.sleep.psy.external_server.business.main.entity.vo.UpdateUserReq;
import com.sleep.psy.external_server.result.Result;
import sun.applet.Main;

import java.util.HashMap;
import java.util.Objects;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author wenliguo
 * @since 2025-08-12
 */
public interface MainUserService extends IService<MainUser> {


    /**
     * 用户登陆
     * @author wenliguo
     * @date 2025/8/12 11:06
     * @param req 请求信息
     * @return com.sleep.psy.external_server.result.Result
    */
    Result login(LoginReq req);


    /**
     * 更新用户信息
     * @author wenliguo
     * @date 2025/8/12 11:41
     * @param req 请求信息
     * @return com.sleep.psy.external_server.result.Result
    */
    Result updateUser(UpdateUserReq req);

    /**
     * 通过账号密码查询用户
     * @author wenliguo
     * @date 2025/8/12 11:02
     * @param accountId 用户名
     * @param password 密码
     * @return com.sleep.psy.external_server.main.entity.MainUser
    */
    MainUser selectByAccountIdPassword(String accountId, String password);

    /**
     * 通过账号查询用户
     * @author wenliguo
     * @date 2025/8/12 14:07
     * @param accountId 账号
     * @return com.sleep.psy.external_server.main.entity.MainUser
    */
    MainUser selectByAccountId(String accountId);


    /**
     * 注册
     * @author wenliguo
     * @date 2025/8/12 14:20
     * @param req 请求信息
     * @return com.sleep.psy.external_server.result.Result
    */
    Result registUser(RegistReq req);

    /**
     * 通过用户id获取用户信息
     * @author wenliguo
     * @date 2025/8/12 14:25
     * @param userId 用户id
     * @return com.sleep.psy.external_server.result.Result
    */
    Result selectByUserId(Long userId);

    /**
     * 通过用户id获取用户信息
     * @author wenliguo
     * @date 2025/8/12 14:45
     * @param userId 用户id
     * @return com.sleep.psy.external_server.main.entity.MainUser
    */
    MainUser selectById(Long userId);


    /**
     * 获取用户的全部方案详情
     * @author wenliguo
     * @date 2025/8/13 14:57
     * @param userId 用户id
     * @return java.util.HashMap<java.lang.String,java.lang.Object>
    */
    Result selectUserScheme(Long userId);


    Result selectTrainingReport(Long userId);


}
